// package com.liangtian.mdm.material.controller;
//
// import com.alibaba.fastjson.JSON;
// import com.alibaba.fastjson.JSONObject;
// import com.github.pagehelper.PageInfo;
// import com.liangtian.mdm.activiti.api.WorkFlowService;
// import com.liangtian.mdm.activiti.api.entity.RunState;
// import com.liangtian.mdm.activiti.api.entity.TjForm;
// import com.liangtian.mdm.base.controller.BaseController;
// import com.liangtian.mdm.base.utils.ResultObject;
// import com.liangtian.mdm.base.utils.ShiroSessionUtils;
// import com.liangtian.mdm.dm.common.pojo.ResponseMsg;
// import com.liangtian.mdm.dm.common.util.RequestUtils;
// import com.liangtian.mdm.material.common.constant.Constants;
// import com.liangtian.mdm.material.model.WlLb;
// import com.liangtian.mdm.material.model.WlLbUpdate;
// import com.liangtian.mdm.material.service.WlLbService;
// import com.liangtian.mdm.material.service.WlLbUpdateService;
// import com.liangtian.mdm.material.service.WlwlService;
// import com.liangtian.mdm.system.log.SysLogUtil;
// import com.liangtian.mdm.system.log.model.SysLogEnum;
// import com.liangtian.mdm.system.log.service.SysLogService;
// import com.liangtian.mdm.system.parameter.service.SysParameterService;
// import com.liangtian.mdm.system.user.model.SysUser;
// import com.liangtian.mdm.util.ConstantBean;
// import org.springframework.beans.factory.annotation.Autowired;
// import org.springframework.stereotype.Controller;
// import org.springframework.web.bind.annotation.RequestBody;
// import org.springframework.web.bind.annotation.RequestMapping;
// import org.springframework.web.bind.annotation.RequestMethod;
// import org.springframework.web.bind.annotation.ResponseBody;
//
// import javax.servlet.http.HttpServletRequest;
// import java.util.ArrayList;
// import java.util.HashMap;
// import java.util.List;
// import java.util.Map;
//
// @Controller
// @RequestMapping("/wlLbUpdateController")
// public class WlLbUpdateController extends BaseController {
//
//     @Autowired
//     private WlLbUpdateService wlLbUpdateService;
//
//     // 日志服务接口对象
//     @Autowired
//     SysLogService sysLogServiceImpl;
//
//     // Session中保存的当前登录用户的信息
//     //@Value("${ConstantBean.CURRENT_SESSION_USER}")
//     //private String ConstantBean.CURRENT_SESSION_USER;
//
//     @Autowired
//     private WlLbService wlLbService;
//
//     @Autowired
//     private WorkFlowService workFlowService;
//
//     @Autowired
//     private WlwlService wlwlService;
//     @Autowired
//     private SysParameterService sysParameterService;
//
//     @SuppressWarnings({"rawtypes", "unchecked"})
//     @RequestMapping(value = "/wlLbUpdateBgPageLst", method = RequestMethod.POST)
//     @ResponseBody
//     public JSONObject wlLbUpdateBgPageLst(HttpServletRequest request, WlLbUpdate update) {
//         // 获取session中用户
//         SysUser user = ShiroSessionUtils.getSessionSysUser(ConstantBean.CURRENT_SESSION_USER);
//         update.setCreatorId(String.valueOf(user.getUserId()));
//         Map paramMap = RequestUtils.paramToMap(request, WlLbUpdate.class, false);
//         String lbbms = (String) paramMap.get("lbbms");
//         if (!StringUtils.isEmpty(lbbms))
//             paramMap.put("lbbmArray", StringUtil.toList(lbbms));
//         paramMap.put("creatorId", String.valueOf(user.getUserId()));
//         PageInfo pageInfo = wlLbUpdateService.wlLbUpdateBgPageLst(paramMap);
//         List l = pageInfo.getList();
//         JSONObject jsonObject = new JSONObject();
//         jsonObject.put("rows", l);
//         jsonObject.put("total", pageInfo.getTotal());
//         return jsonObject;
//     }
//
//     @ResponseBody
//     @RequestMapping(value = "/getWlLbUpdateById", method = RequestMethod.POST)
//     public String getWlLbUpdateById(WlLbUpdate update) {
//         WlLbUpdate upd = null;
//         try {
//             upd = wlLbUpdateService.getWlLbUpdateById(update);
//         } catch (Exception e) {
//             e.printStackTrace();
//         }
//         return JSON.toJSONString(upd);
//     }
//
//     @ResponseBody
//     @RequestMapping(value = "/updateWlLbUpdate", method = RequestMethod.POST)
//     public JSONObject updateWlLbUpdate(WlLbUpdate update, HttpServletRequest request) {
//         JSONObject jsonObject = new JSONObject();
//         ResponseMsg<String> rMsg = new ResponseMsg<String>();
//         try {
//             WlLbUpdate upd = wlLbUpdateService.getWlLbUpdateById(update);
//             upd.setLbbm(update.getLbbm());
//             upd.setLbmc(update.getLbmc());
//             upd.setBzsm(update.getBzsm());
//             upd.setJldw(update.getJldw());
//             if (null != update.getWzcpbz() && !"".equals(update.getWzcpbz())) {
//                 upd.setWzcpbz(update.getWzcpbz());
//             }
//             upd.setState("3");
//             wlLbUpdateService.updateWlLbUpdate(upd);
//             //记录日志
//             SysLogUtil.insertLog("编辑物料类别变更[" + update.getLbbm() + "]",
//                     SysLogEnum.WL_LB.getCode(), SysLogEnum.BG.getCode(), request);
//             rMsg.setRspCode(0);
//         } catch (Exception e) {
//             e.printStackTrace();
//             rMsg.setRspCode(-1);
//         }
//         jsonObject.put("rmsg", rMsg);
//         return jsonObject;
//     }
//
//     @ResponseBody
//     @RequestMapping(value = "/EditByCheckCodeAndModel", method = RequestMethod.POST)
//     public JSONObject EditByCheckCodeAndModel(HttpServletRequest request, WlLbUpdate update) {
//         JSONObject jsonObject = new JSONObject();
//         ResponseMsg<String> rMsg = new ResponseMsg<String>();
//         try {
//             int count = wlLbUpdateService.EditByCheckCodeAndModel(update);
//             rMsg.setRspCode(count);
//         } catch (Exception e) {
//             e.printStackTrace();
//         }
//         jsonObject.put("rmsg", rMsg);
//         return jsonObject;
//     }
//
//     @ResponseBody
//     @RequestMapping(value = "/deleteWlLbUpdateByIdS", method = RequestMethod.POST)
//     public ResultObject deleteWlLbUpdateByIdS(HttpServletRequest request) {
//         String ids = request.getParameter("ids");
//         if (ids == null || "".equals(ids))
//             return null;
//         Map<String, Object> map = new HashMap<>();
//         map.put("idList", ids.split(","));
//         int ret = wlLbUpdateService.deleteWlLbUpdateByIdS(map);
//         int f = ret > 0 ? 1 : 0;
//         //记录日志
//         SysLogUtil.insertLog("删除物料类别变更[" + ids + "]",
//                 SysLogEnum.WL_LB.getCode(), SysLogEnum.SC.getCode(), request);
//         ResultObject result = new ResultObject(f, "删除成功", "删除失败");
//         return result;
//     }
//
//     @SuppressWarnings({"rawtypes", "unchecked"})
//     @RequestMapping(value = "/getWllbUpdateListByCondUpdate", method = RequestMethod.POST)
//     @ResponseBody
//     public JSONObject getWllbUpdateListByCondUpdate(HttpServletRequest request, WlLbUpdate update) {
//         Map paramMap = RequestUtils.paramToMap(request, WlLbUpdate.class, false);
//         PageInfo pageInfo = wlLbUpdateService.getWllbUpdateListByCondUpdate(paramMap);
//         List l = pageInfo.getList();
//         JSONObject jsonObject = new JSONObject();
//         jsonObject.put("rows", l);
//         jsonObject.put("total", pageInfo.getTotal());
//         return jsonObject;
//     }
//
//     @SuppressWarnings({"rawtypes", "unchecked"})
//     @RequestMapping(value = "/wlLbUpdatePageLst", method = RequestMethod.POST)
//     @ResponseBody
//     public JSONObject wlLbUpdatePageLst(HttpServletRequest request, WlLbUpdate update) {
//         // 获取session中用户
//         SysUser user = ShiroSessionUtils.getSessionSysUser(ConstantBean.CURRENT_SESSION_USER);
//         update.setCreatorId(String.valueOf(user.getUserId()));
//         Map paramMap = RequestUtils.paramToMap(request, WlLbUpdate.class, false);
//         paramMap.put("creatorId", String.valueOf(user.getUserId()));
//         PageInfo pageInfo = wlLbUpdateService.wlLbUpdatePageLst(paramMap);
//         List l = pageInfo.getList();
//         JSONObject jsonObject = new JSONObject();
//         jsonObject.put("rows", l);
//         jsonObject.put("total", pageInfo.getTotal());
//         return jsonObject;
//     }
//
//     /**
//      * 物料类别变更提交
//      *
//      * @return
//      
//      * @date 2017-04-24
//      */
//     @RequestMapping(value = "/Submit", method = RequestMethod.POST)
//     @ResponseBody
//     public JSONObject Submit(@RequestBody List<TjForm> forms, HttpServletRequest request) {
//         JSONObject jsonObject = new JSONObject();
//         StringBuffer buffer = new StringBuffer();
//         if (forms.size() > 0) {
//             for (TjForm tjForm : forms) {
//                 if ((boolean) this.checkUpdateSubmit(tjForm.getDataId()).get("success")) {
//
//                     List<TjForm> form = new ArrayList<TjForm>();
//                     form.add(tjForm);
//
//                     List<TjForm> tjlst = new ArrayList<TjForm>();
//                     String systemCode = sysParameterService.getSysParamValue("systemCode", "MDM");// 获取系统参数systemCode，如果返回值为空则默认返回值为"MDM"
//                     String useOaWorkflow = sysParameterService.getSysParamValue("useOaWorkflow", "false");// 获取系统参数useOaWorkflow，如果返回值为空则默认返回值为"false"
//                     // if ("WanDa".equals(systemCode) && "true".equals(useOaWorkflow)) {// 当前系统为中国万达主数据，工作流统一为万达集团OA工作流
//                     //     ProcessWfService processwfservice = new ProcessWfService();
//                     //     tjlst = processwfservice.submitForWllb2OaWorkflow(forms);
//                     // } else {
//                     tjlst = workFlowService.submitFlowElse(form);
//                     // }
//
//                     //List<String> mtj = new ArrayList<String>();//提交前校验未通过，未被允许提交
//                     List<String> fails = new ArrayList<String>();//发起流程失败的
//                     List<String> ends = new ArrayList<String>();//未找到配置的流程
//                     int flowSuccCount = 0;
//                     List<String> idList = new ArrayList<String>();
//
//                     for (int i = 0; i < tjlst.size(); i++) {
//                         TjForm tjfrom = tjlst.get(i);
//                         RunState runState = tjfrom.getRunState();
//                         switch (runState) {
//                             case RUNNING:
//                                 flowSuccCount++;
//                                 idList.add(tjfrom.getDataId());
//                                 break;
//                             case ERROR:
//                                 fails.add(tjfrom.getDataId());
//                                 break;
//                             case PASSED:
//                                 flowSuccCount++;
//                                 ends.add(tjfrom.getDataId());
//                                 break;
//                             default:
//                                 break;
//                         }
//                     }
//
//                     //更新导入表的状态为待审核
//                     if (!StringUtils.isEmpty(idList)) {
//                         Map<String, Object> cond = new HashMap<>();
//                         cond.put("state", 5);
//                         cond.put("updIdList", idList);
//                         wlLbService.submitWlLbUpdateStateById(cond);
//                         jsonObject.put("success", true);
//                     }
//
//                     //没有配置流程直接审核通过
//                     if (!StringUtils.isEmpty(ends)) {
//                         Map<String, Object> cond = new HashMap<>();
//                         cond.put("state", 4);
//                         cond.put("updIdList", ends);
//                         wlLbService.submitWlLbUpdateStateById(cond);
//
//                         List<String> newupdateIds = shenHePass(ends);
//                         List<String> lbbmIdLst = new ArrayList<String>();
//                         for (String updateId : newupdateIds) {
//                             WlLbUpdate update = new WlLbUpdate();
//                             update.setUpdateId(updateId);
//                             WlLbUpdate upd = wlLbUpdateService.getWlLbUpdateById(update);
//                             lbbmIdLst.add(upd.getLbbmId());
//                         }
//
//                         //向分发表插入数据
//                         wlLbService.insertWllbDis(lbbmIdLst, Constants.OPER_BG);
//                         //向分发表插入数据
//                         wlwlService.insertWlwlDis(lbbmIdLst, "2");
//
//                         jsonObject.put("success", true);
//                     }
//
//                     if (!StringUtils.isEmpty(fails)) {
//                         buffer.append("发起流程失败：" + StringUtil.arrayToStringBySplit(fails, " "));
//                         jsonObject.put("success", false);
//                     }
//
//                     jsonObject.put("flowSuccCount", flowSuccCount);
//                     jsonObject.put("msg", buffer.toString());
//
//                 } else {
//                     buffer.append("提交失败：" + this.checkUpdateSubmit(tjForm.getDataId()).get("msg"));
//                     jsonObject.put("msg", buffer.toString());
//                     jsonObject.put("success", false);
//                 }
//             }
//             for (TjForm tjForm : forms) {
//                 String tj = tjForm.getDataId();
//
//                 //记录日志
//                 SysLogUtil.insertLog("提交物料类别[" + tj + "]",
//                         SysLogEnum.WL_LB.getCode(), SysLogEnum.TJ.getCode(), request);
//
//             }
//
//         }
//         return jsonObject;
//     }
//
//     /**
//      * 提交时校验
//      *
//      * @param updateId
//      * @return
//      */
//     public Map<String, Object> checkUpdateSubmit(String updateId) {
//         Map<String, Object> map = new HashMap<>();
//         StringBuffer buffer = new StringBuffer();
//         WlLbUpdate update = new WlLbUpdate();
//         update.setUpdateId(updateId);
//         WlLbUpdate upd = wlLbUpdateService.getWlLbUpdateById(update);
//         WlLb querywllb = new WlLb();
//         querywllb.setLbbmId(upd.getLbbmId());
//         WlLb wlLb = wlLbService.getWlLbById(querywllb);
//         int mcCount = wlLbUpdateService.checkNameUpdate(upd);
//         String status = wlLb.getNouse();
//         if ("1".equals(status)) {
//             map.put("success", false);
//             buffer.append("提交失败：代码已被冻结!");
//         } else if (mcCount > 0) {
//             map.put("success", false);
//             buffer.append("提交失败：物料类别名称重复!");
//         } else {
//             map.put("success", true);
//         }
//         map.put("msg", buffer.toString());
//         return map;
//     }
//
//     /**
//      * 将变更审核通过的数据更新到正式表,并且获得除修改产品组以外字段的ID集合
//      *
//      * @param updateIds
//      */
//     private List<String> shenHePass(List<String> updateIds) {
//         List<String> updateNewIds = new ArrayList<String>();
//         for (String updateId : updateIds) {
//             WlLbUpdate upd = new WlLbUpdate();
//             upd.setUpdateId(updateId);
//             WlLbUpdate update = wlLbUpdateService.getWlLbUpdateById(upd);//审核通过后待更新的数据
//             WlLb querywllb = new WlLb();
//             querywllb.setLbbmId(update.getLbbmId());
//             WlLb wlLb2 = wlLbService.getWlLbById(querywllb);//没更新之前的数据
//             updateNewIds.add(updateId);
//             WlLb wllb = new WlLb();
//             if (String.valueOf(update.getVersion()).equals("1")) {
//                 WlLbUpdate update2 = new WlLbUpdate();
//                 update2.setLbbm(wlLb2.getLbbm());
//                 update2.setPid(wlLb2.getPid());
//                 update2.setLbmc(wlLb2.getLbmc());
//                 update2.setPid(wlLb2.getPid());
//                 update2.setLbbmId(wlLb2.getLbbmId());
//                 update2.setBzsm(wlLb2.getBzsm());
//                 update2.setJldw(wlLb2.getJldw());
//                 update2.setLmzwm(wlLb2.getLmzwm());
//                 update2.setWzcpbz(wlLb2.getWzcpbz());
//                 update2.setBmgz(wlLb2.getBmgz());
//                 update2.setCpgroup(wlLb2.getCpgroup());
//                 update2.setCglx(wlLb2.getCglx());
//                 update2.setState("4");
//                 update2.setVersion(wlLb2.getVersion());
//                 update2.setCreateTime(wlLb2.getCreateTime().substring(0, wlLb2.getCreateTime().length() - 2));
//                 update2.setCreatorId(wlLb2.getCreatorId());
//                 update2.setCreatorName(wlLb2.getCreatorName());
//                 update2.setAllownextlevel(wlLb2.getAllowNextLevel());
//                 update2.setOperationtype("0");
//                 update2.setLbmcjc(wlLb2.getLbmcjc());
//                 update2.setNormt1(wlLb2.getNormt1());
//                 update2.setNormt2(wlLb2.getNormt2());
//                 update2.setNormt3(wlLb2.getNormt3());
//                 update2.setNormt4(wlLb2.getNormt4());
//                 //update2.setSubmitTime(wlLb2.getSubmitTime().substring(0,wlLb2.getSubmitTime().length()-2));
//                 wlLbUpdateService.insertWlLbUpdate(update2);  //将正式表数据插入变更表
//
//             }
//             if (update.getLbbm().length() == 2) {
//                 wllb.setLbmc(update.getLbmc());
//                 wllb.setBzsm(update.getBzsm());
//                 wllb.setLbbmId(update.getLbbmId());
//                 wllb.setUpdateTime(update.getCreateTime());
//                 wllb.setUpdateUid(update.getCreatorId());
//                 wllb.setUpdateUname(update.getCreatorName());
//                 wllb.setVersion(wlLb2.getVersion() + 1);
//                 wllb.setLbmcjc(update.getLbmcjc());
//                 wllb.setNormt1(update.getNormt1());
//                 wllb.setNormt2(update.getNormt2());
//                 wllb.setNormt3(update.getNormt3());
//                 wllb.setNormt4(update.getNormt4());
//                 wlLbService.updateWlLbBg(wllb);
//             } else {
//                 wllb.setLbmc(update.getLbmc());
//                 wllb.setBzsm(update.getBzsm());
//                 wllb.setLbbmId(update.getLbbmId());
//                 wllb.setJldw(update.getJldw());
//                 wllb.setWzcpbz(update.getWzcpbz());
//                 wllb.setCglx(update.getCglx());
//                 wllb.setUpdateTime(update.getCreateTime());
//                 wllb.setUpdateUid(update.getCreatorId());
//                 wllb.setUpdateUname(update.getCreatorName());
//                 wllb.setVersion(wlLb2.getVersion() + 1);
//                 wllb.setLbmcjc(update.getLbmcjc());
//                 wllb.setNormt1(update.getNormt1());
//                 wllb.setNormt2(update.getNormt2());
//                 wllb.setNormt3(update.getNormt3());
//                 wllb.setNormt4(update.getNormt4());
//                 wllb.setCpgroup(update.getCpgroup());//添加修改产品组方法
//                 wlLbService.updateWlLbBgLong(wllb);
//             }
//         }
//         return updateNewIds;
//     }
//
// }
